//
// Created by 吴喆 on 2020/3/6.
//

#ifndef SUMMER_RENDERER_H
#define SUMMER_RENDERER_H

#import <glm/glm.hpp>
#import <glm/ext.hpp>
#import "Texture.h"
#import "Shader.h"
#include "Camera.h"

class Renderer {
//
// Created by 吴喆 on 2020/3/5.
//

public:

    explicit Renderer(Shader *shader);

    ~Renderer();

    virtual void DrawSprite(Camera *camera, Texture2D *texture, glm::vec2 position,
                            glm::vec2 size = glm::vec2(10, 10), float rotate = 0.0f, bool hFlip = false, bool vFlip = false,
                            bool useColor = false, glm::vec4 color = glm::vec4(1.0f)) = 0;



    Shader *shader;
protected:
    virtual void initRenderData() = 0;

    unsigned int quadVAO = 0;
//    unsigned int vao = 0;
    bool otho = false;
private:




};


#endif //SUMMER_RENDERER_H
